home *** CD-ROM | disk | FTP | other *** search
/ Wonky Flux Batch 2019 02 / Wonky_Flux_Batch_2019-02.zip / Wonky Flux Batch 2019-02 / 089 - Misc Stuff - PD.dsk / MACRO LIBRARY.S < prev    next >
Text File  |  2019-02-17  |  5KB  |  305 lines

  1. ******************
  2. *                *
  3. * MACRO LIBRARY  *
  4. *                *
  5. * WITH 3 PROGRAM *
  6. *    EXAMPLES    *
  7. *                *
  8. *     7/1/81     *
  9. *                *
  10. * USE AS A GUIDE *
  11. *                *
  12. ******************
  13.  
  14. CH        = $24
  15. PRNTAX    = $F941
  16. TABV      = $FB5B
  17. COUT      = $FDED
  18.  
  19.           DO 0
  20.  
  21. INCR      MAC
  22.           INC ]1
  23.           BNE NC
  24.           INC ]1+1
  25. NC        <<<
  26.  
  27. DECR      MAC
  28.           LDA ]1
  29.           BNE ND
  30.           DEC ]1+1
  31. ND        DEC ]1
  32.           <<<
  33.  
  34. TR        MAC
  35.           LDA ]1
  36.           STA ]2
  37.           <<<
  38.  
  39. STIND     MAC
  40.           >>> TR.]1      ;(]2),Y
  41.           INY
  42.           >>> TR.]1+1    ;(]2),Y
  43.           <<<
  44.  
  45. LDIND     MAC
  46.           >>> TR.(]1),Y  ;]2
  47.           INY
  48.           >>> TR.(]1),Y  ;]2+1
  49.           <<<
  50.  
  51. TRANS     MAC
  52.           >>> TR.]1      ;]2
  53.           >>> TR.]1+1    ;]2+1
  54.           <<<
  55.  
  56. ADD       MAC
  57.           CLC
  58.           LDA ]1
  59.           ADC ]2
  60.           STA ]3
  61.           LDA ]1+1
  62.           ADC ]2+1
  63.           STA ]3+1
  64.           <<<
  65.  
  66. SUB       MAC
  67.           SEC
  68.           LDA ]1
  69.           SBC ]2
  70.           STA ]3
  71.           LDA ]1+1
  72.           SBC ]2+1
  73.           STA ]3+1
  74.           <<<
  75.  
  76. ADDX      MAC
  77.           TXA
  78.           CLC
  79.           ADC ]1
  80.           STA ]2
  81.           LDA ]1+1
  82.           ADC #0
  83.           STA ]2+1
  84.           <<<
  85.  
  86. ADDY      MAC
  87.           TYA
  88.           CLC
  89.           ADC ]1
  90.           STA ]2
  91.           LDA ]1+1
  92.           ADC #0
  93.           STA ]2+1
  94.           <<<
  95.  
  96. ADDNUM    MAC
  97.           LDA #]1
  98.           CLC
  99.           ADC ]2
  100.           STA ]2
  101.           BCC NI
  102.           INC ]2+1
  103. NI        <<<
  104.  
  105. SWAP      MAC
  106.           LDA ]1
  107.           PHA
  108.           LDA ]2
  109.           STA ]1
  110.           PLA
  111.           STA ]2
  112.           <<<
  113.  
  114. COMPARE   MAC
  115.           LDA ]1
  116.           CMP ]2
  117.           LDA ]1+1
  118.           SBC ]2+1
  119.           <<<
  120.  
  121. CMPADRS   MAC
  122.           LDA ]1
  123.           CMP #<]2
  124.           LDA ]1+1
  125.           SBC #>]2
  126.           <<<
  127.  
  128. POKE      MAC
  129.           >>> TR.#]2     ;]1
  130.           <<<
  131.  
  132. SETPNT    MAC
  133.           >>> POKE.]1    ;]2
  134.           >>> POKE.]1+1  ;>]2
  135.           <<<
  136.  
  137. CMPSTR    MAC
  138. LP        LDA (]2),Y
  139.           ORA #%10000000
  140.           CMP ]1,Y
  141.           BNE OUT
  142.           DEY
  143.           BPL LP
  144.           INY
  145. OUT       <<<
  146.  
  147. PRCHR     MAC
  148.           LDA #]1
  149.           JSR COUT
  150.           <<<
  151.  
  152. PRADRS    MAC
  153.           LDX ]1
  154.           LDA ]1+1
  155.           JSR PRNTAX
  156.           <<<
  157.  
  158. GOTOXY    MAC
  159.           >>> POKE.CH    ;]1
  160.           LDA #]2
  161.           JSR TABV
  162.           <<<
  163.  
  164. MESSAGE   MAC
  165.           LDY #0
  166. MLP       LDA ]1,Y
  167.           BEQ SENT
  168.           JSR COUT
  169.           INY
  170.           BNE MLP
  171. SENT      <<<
  172.  
  173.           FIN
  174.  
  175. ***** EXAMPLES ******
  176.  
  177. EXAMPLE   KBD
  178.  
  179. *********************
  180.  
  181. *  EXAMPLE 1
  182. *(PRINT BLOAD ADDRESS AND LENGTH)
  183.  
  184.           DO EXAMPLE-1
  185.           ELSE
  186.  
  187. BLEN      = $AA60
  188. BLADRS    = $AA72
  189. HOME      = $FC58
  190.  
  191.           ORG $300
  192.  
  193.           JSR HOME
  194.           >>> GOTOXY.5   ;10
  195.           >>> PRCHR."A"
  196.           >>> PRCHR."$"
  197.           >>> PRADRS.BLADRS
  198.           >>> PRCHR.","
  199.           >>> PRCHR."L"
  200.           >>> PRCHR."$"
  201.           >>> PRADRS.BLEN
  202.           RTS
  203.  
  204.           FIN
  205.  
  206. *********************
  207.  
  208. *  EXAMPLE 2
  209. *(FIND INPUT ASCII STRING IN
  210. *MEMORY FROM $800 TO $BFFF.)
  211. *PUT EXAMPLE = 2 TO ASSEMBLE
  212.  
  213.           DO EXAMPLE-2
  214.           ELSE
  215.  
  216. PL        = $18
  217. QL        = $1A
  218. LEN       = $1C
  219. PROMPT    = $33
  220. IN        = $200
  221. DOSWRM    = $3D0
  222. START     = $800
  223. END       = $C000
  224. HOME      = $FC58
  225. GETLN     = $FD6A
  226. CROUT     = $FD8E
  227. SETKBD    = $FE89
  228. SETVID    = $FE93
  229.  
  230.           ORG $300
  231.  
  232.           JSR SETKBD     ;DISCONNECT DOS
  233.           JSR SETVID
  234.           JSR HOME
  235.           >>> MESSAGE.TYPE
  236.           >>> SETPNT.PL  ;START
  237.           >>> POKE.PROMPT;":"
  238.           JSR GETLN      ;GET INPUT STRING
  239.           DEX
  240.           BMI EXIT       ;LEAVE IF NO INPUT
  241.           STX LEN
  242.           >>> ADDX.PL    ;QL
  243. NXCMP     LDY LEN
  244.           >>> CMPSTR.IN  ;PL
  245.           BNE NEXT
  246.           JSR CROUT      ;FOUND, PRINT LOCATION
  247.           >>> PRCHR."$"
  248.           >>> PRADRS.PL
  249. NEXT      >>> INCR.PL
  250.           >>> INCR.QL
  251.           >>> CMPADRS.QL ;END ;FINISHED?
  252.           BLT NXCMP
  253.           >>> MESSAGE.CALL
  254. EXIT      JMP DOSWRM
  255. TYPE      ASC "TYPE STRING TO BE FOUND"
  256.           BRK            ;SIGNALS MSG END
  257. CALL      HEX 8D
  258.           INV "CALL 768 FOR MORE"
  259.           BRK
  260.  
  261.           FIN
  262.  
  263. *********************
  264.  
  265. *  EXAMPLE 3
  266. *(REVIVE A DEAD APPLESOFT PROG.)
  267. *PUT EXAMPLE = 3 TO ASSEMBLE
  268.  
  269.           DO EXAMPLE-3
  270.           ELSE
  271.  
  272. PL        = 6
  273. QL        = 8
  274. PROGBEG   = $67
  275. VARTAB    = $69
  276. FPPNT     = $D4F2
  277. DOSCLD    = $3D3
  278.  
  279.           ORG $300
  280.  
  281.           >>> TRANS.PROGBEG;PL
  282.           >>> ADDNUM.4   ;PL
  283.           LDY #0
  284. FNDEND    LDA (PL),Y     ;FIND END OF FIRST LINE
  285.           PHP
  286.           >>> INCR.PL
  287.           PLP
  288.           BNE FNDEND
  289.           >>> STIND.PL   ;PROGBEG ;FIRST LINK
  290. LOOP      DEY            ;NOW Y=0
  291.           >>> LDIND.PL   ;QL ;PUT NEXT LINK IN QL
  292.           LDA QL         ;IS LINK
  293.           ORA QL+1       ;= 0 ?
  294.           BEQ FIXPNT
  295.           >>> COMPARE.QL ;PL ;VALIDITY CHECK
  296.           BLT BADPROG
  297.           >>> TRANS.QL   ;PL ;SET UP FOR LOOP
  298.           JMP LOOP
  299. FIXPNT    >>> ADDNUM.2   ;PL ;NOW PL=END PROGRAM
  300.           >>> TRANS.PL   ;VARTAB
  301.           JMP FPPNT      ;LET APPLESOFT FINISH IT UP
  302. BADPROG   JMP DOSCLD
  303.  
  304.           FIN
  305.